import { useContext, createContext, Context } from "react";
import { RootStore } from "./store";

// export let StoreContext: React.Context<RootStore>;
export const StoreContext = createContext<RootStore>(new RootStore({}));

export function initStore(): [RootStore, Context<RootStore>] {
  const store = new RootStore({});
  const storeContext = createContext<RootStore>(store);

  return [store, storeContext];
}

// export function registerStoreContext(store: RootStore) {
//   const ctx = createContext<RootStore>(store);

//   StoreContext = ctx;

//   return ctx;
// }

export const useStore = () => {
  const store = useContext(StoreContext);
  if (store == null) {
    throw new Error("RootStore is not available!");
  }
  return store;
};
